"""
参数：
1.位置参数
    个数和顺序 定义与调用必须一致
2.关键字参数
    调用时，参数的传递以key=value的形式
3.默认参数
    函数定义时，就提供了默认值
    调用时，可以传递也可以不传
4.可变参数
    参数个数不稳定，可变，不定长
    1）定义时使用一个星号*
        调用时用位置传递
    2）定义时使用两个星号**
        调用时用关键字传递
"""


def user_info1(name, age, gender):
    print(f'姓名:{name},年龄:{age},性别:{gender}')


# 调用时，参数的个数和顺序与定义一致
user_info1('tom', 18, 'male')
# 个数必须一致
# user_info1('zs',19)
# 顺序不一致的话，赋值也会乱
# user_info1(19,'male','ls')

# 调用时，使用”key=value“形式传递参数
# 关键字参数：顺序没有关系
user_info1(age=18, name='HXL', gender="female")


def user_info2(name, age, gender=male)...


user_info1('zs', 18)
user_info2('ls', 19, 'female')


def user_info3(*args):
    return args


def user_info4(**kwargs):
    return kwargs


# 调用 位置传递：返回的是元组类型
result3 = user_info3('tom', 18)
print(result3)
#调用 关键字传递，返回的是字典
result4 = user_info4(name='tom',age=18)
print(result4)